package satk.beans.persona;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import satk.objetos.Persona;

/**
 * <h3>AddPersonaBeans.java</h3>
 * <div><em>Fecha de creación: 27/05/2011, 11:32:45 AM.</em></div>
 * <p></p>
 * @author Sergio Flores Genis <sf.cancun@gmail.com>
 */
@ManagedBean
@RequestScoped
public class AddPersonaBeans 
            implements satk.beans.interfaces.IntControlBeansAdd, java.io.Serializable {

    private Persona persona = null;

    public AddPersonaBeans() {
        this.persona = new Persona();
    }

    @Override
    public Persona getNews() {
        return persona;
    }
   
    @Override
    public String add() {
        java.util.List<java.lang.Throwable> lista = persona.valida();
        if (!lista.isEmpty()) {
            String summary = satk.tools.GeneralEx.excepcionListThrowable(lista);
            throw new javax.faces.validator.ValidatorException(new FacesMessage(summary));
        }
        try {
            new satk.database.ManagerPersona().add(persona);
            this.persona = new Persona();
        } catch (java.sql.SQLIntegrityConstraintViolationException ex) {
            Logger.getLogger(AddPersonaBeans.class.getName()).log(Level.SEVERE,
                    "Problema de integridad de datos", ex);
            if (ex.getErrorCode() == 1062){
                throw new javax.faces.event.AbortProcessingException(
                        "Ya exite un registro con la misma boleta");
            } else {
                throw new javax.faces.event.AbortProcessingException(ex.getErrorCode()
                        + "- Se violo la integridad de datos <br/>."+ ex.getMessage());
            }
        } catch (java.sql.SQLException ex) {
            Logger.getLogger(AddPersonaBeans.class.getName()).log(Level.SEVERE,
                    "Error al registrar a la persona", ex);
            throw new javax.faces.event.AbortProcessingException(ex.getErrorCode() + ex.getMessage());
        }
        return null;
    }
}
